In data transmission in the form of data frames, the information to be transmitted is divided into data frames of usually regular length. In addition to the primary information, the data frames can also contain title information and other information required in the transmission of data frames. The data frames are transmitted from the transmitter to the receiver via a transmission channel which can comprise e.g. the radio channel or another wireless transmission channel. The transmission channel is exposed to disturbances, such as ignition interference caused by electrical devices, and on the other hand to interference caused by other devices of similar type used in wireless data transmission, such as radio transmitters. Still another considerable cause of disturbance, particularly in movable transmitter/receiver devices, is the fact that the signal to be received can enter the receiver via several routes of different lengths, thus distorting the signal to be received. Therefore, for eliminating transmission errors, error correction data or at least error detection data is usually added to the data frames. One method for adding error correction data is the use of so-called convolutional codes, i.e. the information to be transmitted is coded by using a suitable convolutional code, and the convolutional-coded information is transmitted to the data transmission channel. At the receiving stage, the operation is reversed for separating the transmitted information from the received data transmission stream. The error detecting data used is most commonly parity checking data which is calculated from the information to be transmitted, or at least from part of it. One such known parity checking method is the so-called cyclic redundancy check (CRC). Thus, at the receiving end, the received information is subjected to the corresponding operation, and the parity checking data formed at the receiving end is compared with the received parity checking data. If the data are equivalent, the receiving device concludes that the data was received correctly. If the calculated and received parity data are not equivalent, the receiving device concludes that the received data frame was at least partly incorrect. After this it is possible to request re-transmission or to try to decode the incorrect frame e.g. by interpolation.
Using error correction methods, it is possible to correct at least some of the potential transmission errors, wherein re-transmission is not necessary in all error situations. However, when an error checking method is used, only correctness or incorrectness is detected, and re-transmission is requested in an error situation, thus delaying the data transmission. These codes can also be called an outer code and an inner code. Outer coding is conducted before inner coding. Thus, the coding data formed by outer coding is further subjected by inner coding, thus improving the reliability of the transmission. The outer code is usually an error-detecting code and the inner code an error correcting code, but these can also be reversed. The coding can also concatenate more than two codes.
In current digital mobile communication systems, also speech is transferred in the form of data frames. For example in the GSM mobile communication system (Global System for Mobile Communications), in the full rate speech communication channel a majority of the digital information formed of the audio signal is protected by error correction coding. In the speech coder, 260 speech parameter bits are formed for each speech sequence of 20 milliseconds. Of these 260 bits, 182 bits with subjectively greatest significance are protected with an error correction code. These 182 bits are subjected to convolutional coding at a coding rate of 1/2, i.e. two bits to be transmitted to the transmission channel are formed for each information bit. The remaining 78 bits are transmitted with no protection, i.e. possible errors in them are not detected at the receiving stage.
The bit (symbol) error ratio in the received data frames can at times exceed the error correction capacity of the error correction method used in the transmission of the data frames. As a result, all errors cannot be corrected, wherein the most common procedure is to request re-transmission of such data frames or, e.g. in speech coding, to try to form a data frame synthesised on the basis of previously received data frames. Synthesisation of data frames can be used to some extent in the transmission of audio and video signals, but for example in the transmission of data signals, it is not possible to use a synthesised data frame.
When the error correction capacity of the receiver is exceeded, it is important to detect those errors which are still left after error correction. Such incorrect information should not be used in the receiver when reconstructing the transmitted information. For example in the full rate traffic channel in the GSM system, detection of uncorrected errors is conducted by CRC coding by forming three parity checking bits. When forming these parity checking bits, 50 bits from each data frame are used which are the most significant for the information to be transmitted. Thus these 50 data frame bits are subjected to the corresponding operation in the receiver, and the parity checking bits are compared with the parity checking bits transmitted with the data frame, wherein possible changes indicate that there was an error in the data transmission.
In the GSM system, speech decoding will reject all data frames in which it was not possible to correct all errors. These data frames are replaced by a data frame formed on the basis of previously received acceptable data frames. If the number of incorrect data frames is relatively small, the replaced data frames do not impair significantly the quality of the decoded speech signal. However, if the number of incorrect data frames increases, its effect can be gradually clearly audible in the speech signal. This can even lead to the fact that the decoded speech signal is no longer intelligible.
FIG. 1a is a block diagram showing a speech coding system according to prior art. This is an example of the full rate speech coding system of the GSM system. FIG. 1a is a block diagram showing speech coding, addition of parity checking bits, and convolutional coding. FIG. 4 is a flow chart showing this channel coding used in the transmission of a speech signal of the GSM mobile communication system according to prior art. In the following, the operation of channel coding is shown with reference to the apparatus of FIG. 1a and the flow chart of FIG. 4.
The speech signal is divided into frames, or time intervals of certain length, which in this system is 20 milliseconds. Each frame is coded separately. Thus each speech signal frame of 20 milliseconds yields a group of speech parameters in digital form. The digital speech samples 100 formed of the speech signal are coded in the speech encoder 101 in order to form a speech parameter frame. The speech encoder compresses the speech into a bit stream of 13.0 kbit/s. Of each speech frame of 20 milliseconds, the encoder forms 260 speech parameter bits which make up the speech parameter frame 102 (stage 401).
This speech parameter frame 102 is further transmitted to a channel encoder 104 for grouping the bits, for example into bits to be protected with error correction coding and into bits to be left unprotected. Further, the channel encoder is used for forming error detection information, wherein some of the speech parameters are used for its calculation. In the speech parameter frame 102, the bits for each parameter are arranged into a descending order of importance, i.e. the most significant bits are closer to the beginning of the data frame. After this, the bits are arranged in the grouping block 103 first into an order of importance so that the most significant bits for all the bits in the speech parameter frame 102 are located at the beginning (on the left hand side) of the data frame and the least significant bits are located at the end (on the right hand side). Further, the bits are divided into three groups: the first group includes the 50 most significant bits which will be protected by channel coding at a later stage and which will be used for formation of the parity checking bits, the 132 bits of the second group are protected by channel coding but these will not be used in the formation of the parity checking bits, and the 78 bits of the third group are transmitted in the data transmission channel without protection by channel coding.
Next, the bit grouping block 103 divides the speech parameter bits into two separate classes, of which the class I comprises said bits of the first (class Ia) and second (class Ib) groups, and the class II comprises the bits of the third group. The 182 bits of class I with the subjectively greatest significance are transmitted to the block 107 for coding the error checking information. However, the 78 bits of class II are not protected at all. Next, three parity checking bits (CRC) of the 50 most significant bits are calculated in parity formation block 105 (stage 403). Next, the bits are arranged in the first arranging block 106 so that the most significant bits for speech in the speech parameters are placed in the better protected part in the convolutional coding (better bit error ratio), i.e. at the beginning and end of the part of the data frame to be protected (stage 404). The less significant bits and the three parity checking bits are placed in the middle of that part, where the bit error ratio is poorer. This situation is illustrated in FIG. 3a, in which the letters S indicate strongly protected bits in the error checking information, the letters W indicate weakly protected bits in the error checking information, and the letters N indicate weakly protected bits which are not used in the formation of the error checking information. There is also a curve drawn in the same FIG. 3a to illustrate the bit error probability of each bit, showing which parts of the data frame are better protected and which parts are protected more weakly.
At the end of the data frame, four tail bits are added (stage 405), for bringing the channel coder finally to a known state. At this stage, the data frame to be channel coded and having 189 bits (50+3+132+4) is transferred to the channel coder 107 with the 1/2 bit ratio (stage 406), thus giving a channel coded data frame with 378 bits.
Also the CRC bits are subjected to error correction coding 107 to secure that the error correction information is provided with maximum reliability in data transmission. In the full rate speech channel of the GSM system, the error correction coding involves convolutional coding with the bit ratio 1/2 and addition of four tail bits. The convolutional coding generates two bits of each of the 182 speech parameter bits and two bits of each of the four tail bits, as well as of each of the three CRC bits. A total of 456 bits of each speech frame of 20 milliseconds are generated at the output 111 by the transmitter. Of these, 78 bits are unprotected bits of class II and 378 bits are formed by convolutional coding 107. The outgoing bits 108 of the convolutional coding and the unprotected bits 109 are combined in a multiplexer block 110, wherein the output of the multiplexer block 110 gives a representation of 456 bits from the speech signal frame of 20 milliseconds (stage 407). The bit rate of this bit stream 111 is 22.8 kbit/s.
In the receiver, the converse operations to the said operations are carried out mainly in reverse order. FIG. 1b shows an example of such a receiver of prior art. The receiver is intended to be used as a receiver of the full rate speech channel of the GSM system. The received data frame 112, i.e. the bit string of 456 bits, is transferred to a bit reordering block 113, where the channel coded part 114 and the channel uncoded part 123 of the data frame are separated from each other. The channel coded part is transferred to the channel decoder 115, where first the decoding of the channel coded part takes place in the decoding block 116. At this stage, some of the possibly incorrect bits can be corrected, provided that the number of errors is within the error correction capacity of the error correction code. The decoded data frame 117 is transferred to the second bit reordering block 118, where the order of the bits is rearranged in the order of placement by the speech coder, i.e. the most significant bits for speech are placed on the left hand side of the data frame.
Following this, the parity checking block 119 checks if the channel decoded data frame is in order for the bits within the parity check. The parity checking block generates a selection signal 120 with a value of either true (e.g. logical 0 state) or false (e.g. logical 1 state) according to whether the data frame is in order (true) or incorrect (false). Further, the parity checking block 119 conveys the channel decoded data frame to the second output 121 of the parity checking block, from which the data frame is transmitted to the first input of the second multiplexer 122. The operation of the parity checking block 119 depends e.g. on the parity checking method used, and it is prior art known to an expert in the field.
The channel-uncoded or unprotected part 123 of the received data frame is transferred to the second input of the second multiplexer 122, wherein the output of the second multiplexer has a speech parameter frame 125 which thus in correct data transmission corresponds to the speech parameter frame 102 generated by the speech encoder 101.
From the output of the multiplexer, the speech parameter frame 125 is transferred to the first input of a selector 126. The output of a synthesisation block 124 is conducted to the second input of the selector 126. To the control input of the selector 126 is conveyed the selection signal 120 generated by the parity checking block 119, on the basis of which selection signal the selector 126 couples to the output of the selector 126 either the output of the second multiplexer 122, if the value of the selection signal 120 is true, or the output of the synthesisation block 124, if the value of the selection signal 120 is false. From the output of the selector, the speech parameter frame or the synthesised data frame is transferred to a speech decoder 127 for generating a speech signal 128.
In the system presented above, all protected bits do not have an equal bit error probability after the data frame has been subjected to error correction. This situation is typical with convolutional codes which begin and end in a known state. The bits of the beginning and end of the convolutional coded data frame have a smaller error probability than the bits located in the middle of the data frame. It is obvious that the frame error rate cannot be smaller (better) than the greatest (poorest) error rates of the bits protected by error correction. As a consequence, if an error is detected in the reception of any bit protected by error correction, this data frame is rejected in whole even though the better protected bits within the parity checking were received correctly. Thus the error correction efficiency is decreased in these situations when using currently known methods.
Errors in the convolutional decoded bit stream (117) are often found in bursts, i.e. several errors come up within a short time interval which may be followed by a longer period with no errors. Still, the average number of errors can be relatively small. This may result in the rejection of the whole data frame, although the cycle containing the burst-like error were placed in only a small part of protected bits covered by parity checking.